package com.isscollage.service;

import java.util.List;

import com.isscollage.entity.OrderDetail;
import com.isscollage.entity.OrderHeader;
import com.isscollage.entity.TicketOrder;
import com.isscollage.search.OrderSearch;

public interface OrderService {

	public List<TicketOrder> searchTicketOrderByCon(OrderSearch orderSearch);
	
	public TicketOrder getTicketOrderById(String ticketOrderId);
	
	/**
	 * 保存订单信息
	 * ticketOrder减去购买的票的数量
	 * @param orderHeader
	 * @return
	 */
	public OrderHeader saveOrder(OrderHeader orderHeader);
	
	/**
	 * 支付订单
	 * 查询出用户总金额，减去付款金额，为用户剩余金额
	 * 订单信息变为已付款，出行状态变为1
	 * @param orderId
	 * @return
	 */
	public boolean payOrder(String orderId);
	
	/**
	 * 查询出该笔订单，获取订单总单数，
	 * 删除该笔订单，
	 * 车票投放信息表中，剩余车票数需要加上该笔订单数量
	 * @param orderId
	 * @return
	 */
	public boolean cancelOrder(String orderId);
	
	/**
	 * 判断是否有为付款的订单，有先取消订单，在进行预订车票
	 * 有则返回true，无则返回false
	 * @return
	 */
	public boolean checkOrder();
	
	/**
	 * 通过条件查询某用户下订单信息，
	 * 条件orderFlag包括未完成订单0，已完成订单1，已出行2
	 * 用户通过session获取id
	 * @param search
	 * @return
	 */
	public List<OrderHeader> searchOrderByCon(OrderSearch search);
	
	/**
	 * 将字段类型变为已退款。
	 * orderHeader的orderPrice减去detail的orderPrice和orderNumber-1
	 * ticketOrder的orderNumber+1
	 * users的账户金额+detail 的orderPrice
	 * @param detailId
	 * @return
	 */
	public boolean returnTicket(String detailId);
	
	/**
	 * 将字段类型变为已出行
	 * @param detailId
	 * @return
	 */
	public boolean gotoTicket(String detailId);
	
	/**
	 * 删除订单记录
	 * @param detailId
	 * @return
	 */
	public boolean deleteTicket(String detailId);
}
